package leetcode每日一题;

/**
 * 1. 问题描述
 *
 * 2. 算法分析
 *
 * 3. 代码实现
 */
@SuppressWarnings("all")
public class 盛水最多的容器 {
    /**
     * 双指针暴力法  时间复杂度为:O(n^2)  空间复杂度为:O(1)
     * @param height
     * @return
     */
    public int maxArea1(int[] height) {
        int len = height.length;
        if(len <= 1) {return 0;}
        int i = 0;
        int j = len - 1;
        int res = 0;
        while(j >= 0) {
            if(i == j) {
                i = 0;
                j--;
            } else {
                int temp = Math.min(height[i],height[j]) * (j-i);
                res = Math.max(res,temp);
                i++;
            }
        }
        return res;
    }


    /**
     * 优化算法
     * @param height
     * @return
     */
    public int maxArea2(int[] height) {
        int i = 0;
        int j = height.length - 1;
        int res = 0;
        while(i < j) {
            res = Math.max(res,Math.min(height[i],height[j])*(j-i));
            if(height[i] < height[j]) {
                i++;
            } else {
                j--;
            }
        }
        return res;
    }
}
